
/**
*判断是否是数字
*
**/

function isRealNum(val){
	return !isNaN(parseInt(val));
}

function formatTime(time) {
	if (typeof time !== 'number' || time < 0) {
		return time
	}

	var hour = parseInt(time / 3600)
	time = time % 3600
	var minute = parseInt(time / 60)
	time = time % 60
	var second = time

	return ([hour, minute, second]).map(function (n) {
		n = n.toString()
		return n[1] ? n : '0' + n
	}).join(':')
}

function formatLocation(longitude, latitude) {
	if (typeof longitude === 'string' && typeof latitude === 'string') {
		longitude = parseFloat(longitude)
		latitude = parseFloat(latitude)
	}

	longitude = longitude.toFixed(2)
	latitude = latitude.toFixed(2)

	return {
		longitude: longitude.toString().split('.'),
		latitude: latitude.toString().split('.')
	}
}
var dateUtils = {

	countdownToDate: function(str, mts, callback) {
	    // 解析目标日期时间字符串
	    const targetDate = new Date(str.replace(/-/g, '/'));
	    
	    // 验证日期有效性
	    if (isNaN(targetDate.getTime())) {
	        throw new Error('Invalid date format. Please use yyyy-MM-dd HH:mm:ss format.');
	    }
	    
	    // 增加指定的分钟数
	    targetDate.setMinutes(targetDate.getMinutes() + mts);
	    
	    // 立即执行一次回调
	    const initialDiff = Math.floor((targetDate - new Date()) / 1000);
	    callback(new Date(), initialDiff);
	    
	    // 设置每秒执行的定时器
	    const timer = setInterval(() => {
	        const now = new Date();
	        const diffInSeconds = Math.floor((targetDate - now) / 1000);
	        
	        callback(now, diffInSeconds);
	        
	        // 如果目标时间已过，清除定时器
	        if (diffInSeconds <= 0) {
	            clearInterval(timer);
	        }
	    }, 1000);
	    
	    // 返回清除定时器的方法，以便外部可以手动停止
	    return () => clearInterval(timer);
	},
	
	UNITS: {
		'年': 31557600000,
		'月': 2629800000,
		'天': 86400000,
		'小时': 3600000,
		'分钟': 60000,
		'秒': 1000
	},
	humanize: function (milliseconds) {
		var humanize = '';
		for (var key in this.UNITS) {
			if (milliseconds >= this.UNITS[key]) {
				humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
				break;
			}
		}
		return humanize || '刚刚';
	},
	format: function (dateStr) {
		var date = this.parse(dateStr)
		var diff = Date.now() - date.getTime();
		if (diff < this.UNITS['天']) {
			return this.humanize(diff);
		}
		var _format = function (number) {
			return (number < 10 ? ('0' + number) : number);
		};
		return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDate()) + '-' +
			_format(date.getHours()) + ':' + _format(date.getMinutes());
	},
	nowDateStr: function(date) {
		if (date) {
			
		} else {
			date = new Date();
		}
		var _format = function (number) {
			return (number < 10 ? ('0' + number) : number);
		};
		return date.getFullYear() + '-' + _format(date.getMonth() + 1) + '-' + _format(date.getDate());
	},
	parse: function (str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串，转化为一个Date对象
		var a = str.split(/[^0-9]/);
		return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
	}
};

function checkStringEmpty(target) {
	return target === "" || target === undefined || target === null;
}

function formatDistance(fp) {
    if (fp > 1000.00) {
        // 转换为公里，保留1位小数
        return (fp / 1000).toFixed(1) + '公里';
    } else {
        // 保留0位小数
        return Math.round(fp) + '米';
    }
}


module.exports = {
	formatTime: formatTime,
	formatLocation: formatLocation,
	dateUtils: dateUtils,
	isRealNum: isRealNum,
	checkStringEmpty,
	formatDistance
}
